package algorithm;

/**
 * Created by Administrator on 2017/7/7.
 * 求出int整数的二进制的'1'出现的次数，
 * 利用这样的事实：当N为奇数的时候，他的'1'的个数 == N/2二进制的个数+1
 * 从这个角度看：5的个数是 one(5/2)+1 而5-1==4,4的末尾肯定是0结尾，因此5肯定比4多一个
 * 退出：偶数的是one(N/2)个
 */
public class Ones {
    public static int one(int N){
        if (N == 1){
            return 1;
        }else {
            return one(N/2)+N%2;
        }
    }

    public static void main(String[] args) {
        System.out.println(one(23));
    }
}
